Fix AttributeError: 'ClientConnectorCertificateError' object has no attribute '_os_error'.#12136
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #12136 +/- ##
=======================================
Coverage 98.78% 98.78%
=======================================
Files 128 128
Lines 45297 45315 +18
Branches 2403 2405 +2
=======================================
+ Hits 44747 44766 +19
Misses 390 390
+ Partials 160 159 -1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
|
I think this is an example of bugs getting introduced due to supporting non-ssl builds. I'm thinking it might be time to drop support for non-ssl builds soon. |
Fair. I think "missing openssl" as a thing is coming from the late Python 2 epoch. OTOH, nowadays this might be a property of less common runtimes (pyodide etc). |
e0bd413 to
d7dd4fe
Compare
…ttribute '_os_error'. ClientConnectorCertificateError is a subclass of ClientConnectorError and should have all of its attributes (LSP). However, when I try to access the os_error attribute, I get the mentioned exception.
for more information, see https://pre-commit.ci
Backport to 3.13: 💚 backport PR created✅ Backport PR branch: Backported as #12147 🤖 @patchback |
Backport to 3.14: 💚 backport PR created✅ Backport PR branch: Backported as #12148 🤖 @patchback |
What do these changes do?
ClientConnectorCertificateErroris a subclass ofClientConnectorErrorand should have all of its attributes (Liskov substitution principle). However, when I try to access theos_errorattribute in my exception handler, I get the following exception:Are there changes in behavior for the user?
Users that use
hasattr(e, 'os_error')to ensure thateis not an instance ofClientConnectorCertificateError(or its subclasses), will have their code broken.Is it a substantial burden for the maintainers to support this?
There should be none.
Checklist
CONTRIBUTORS.txtCHANGES/foldername it
<issue_or_pr_num>.<type>.rst(e.g.588.bugfix.rst)if you don't have an issue number, change it to the pull request
number after creating the PR
.bugfix: A bug fix for something the maintainers deemed animproper undesired behavior that got corrected to match
pre-agreed expectations.
.feature: A new behavior, public APIs. That sort of stuff..deprecation: A declaration of future API removals and breakingchanges in behavior.
.breaking: When something public is removed in a breaking way.Could be deprecated in an earlier release.
.doc: Notable updates to the documentation structure or buildprocess.
.packaging: Notes for downstreams about unobvious side effectsand tooling. Changes in the test invocation considerations and
runtime assumptions.
.contrib: Stuff that affects the contributor experience. e.g.Running tests, building the docs, setting up the development
environment.
.misc: Changes that are hard to assign to any of the abovecategories.
Make sure to use full sentences with correct case and punctuation,
for example:
Use the past tense or the present tense a non-imperative mood,
referring to what's changed compared to the last released version
of this project.